1. Technical Field
The present invention relates in general to a system and method for speculatively assisting a thread running in a heterogeneous processing environment. More particularly, the present invention relates to a system and method that identifies instructions that can be speculatively performed during compilation and generates code that will execute on dissimilar processor cores.
2. Description of the Related Art
In a single-threaded software application running on one processor of a heterogeneous multi-core chip, the performance of the software application is limited by stalls that occur when requested elements are not at the highest levels of the memory hierarchy (e.g., a cache, an explicitly managed memory “scratchpad,” etc.). As the name implies, a multi-core chip is a single chip with multiple processing cores where the processing cores are able to use different instruction set architectures (ISAs) while still sharing a common memory. An ISA includes a specification of the set of opcodes (machine language), the native commands implemented by a particular CPU design.
In addition, performance of the single-threaded software application is also reduced because of limited hardware resources and the requirements for the appearance of sequential execution. In a system utilizing the heterogeneous multi-core chip, certain processors (i.e., “cores”) may have facilities not found on other processors. For example, some types of processors may have the ability to perform memory-to-memory moves, scatter/gather, or perform single instruction multiple data (SIMD) operations that may be particularly useful in assisting the execution of the single-threaded application.
Moreover, in a heterogeneous system it may be desirable to execute the single-threaded application in the shortest possible time. However, in a traditional system, most of the processor resources are unused because, by definition, a single-threaded application executes on a single core.
What is needed, therefore, is a system and method that speculatively uses resources found in the heterogeneous processing environment in order to assist the software application. What is further needed is a system, method, and program product that execute on more than one type of processors that use different ISAs in order to take advantage of the facilities provided by the various processors in a heterogeneous processing environment.